import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Pieza5 extends Container implements KeyListener, Runnable {
	
	private int posicion = 1;
	protected JButton pieza1, pieza2, pieza3, pieza4;
	Object monitor;
	
	public Pieza5(Object monitor) {
		this.monitor = monitor;
				
		pieza1 = new JButton();
		pieza1.setBounds(15, 15, 15, 15);
		pieza1.setBackground(Color.GREEN);
		this.add(pieza1);				
		
		pieza2 = new JButton();
		pieza2.setBounds(pieza1.getX(), pieza1.getY() - 15, 15, 15);
		pieza2.setBackground(Color.GREEN);		
		this.add(pieza2);
		
		pieza3 = new JButton();
		pieza3.setBounds(pieza1.getX() - 15, pieza1.getY(), 15, 15);
		pieza3.setBackground(Color.GREEN);
		this.add(pieza3);
		
		pieza4 = new JButton();
		pieza4.setBounds(pieza1.getX() - 15, pieza1.getY() + 15, 15, 15);
		pieza4.setBackground(Color.GREEN);
		this.add(pieza4);
		
		pieza2.addKeyListener(this);
		this.setVisible(true);		
	}
	
	public void seguir () {
		if (posicion == 1) {
			pieza2.setLocation(pieza1.getX(), pieza1.getY() - 15);
			pieza3.setLocation(pieza1.getX() - 15, pieza1.getY());
			pieza4.setLocation(pieza1.getX() - 15, pieza1.getY() + 15);
		}
		if (posicion == 2) {
			pieza2.setLocation(pieza1.getX(), pieza1.getY() - 15);
			pieza3.setLocation(pieza1.getX() - 15, pieza1.getY() - 15);
			pieza4.setLocation(pieza1.getX() + 15, pieza1.getY());
		}		
	}	
		
	public void girar(int direccion) {		
		if (pieza1.getY() <= 330 && pieza2.getY() <= 330 && pieza3.getY() <= 330 && pieza4.getY() <= 330) {
			if (direccion == 0) {
				posicion++;
				if (posicion == 3) {
					posicion = 1;
				}					
			}		
			else {
				posicion--;
				if (posicion == 0) {
					posicion = 2;
				}					
			}
			this.seguir();
		}
	}
	
	public void run() {
		synchronized(monitor) {
			while (pieza1.getY() <= 330 && pieza2.getY() <= 330 && pieza3.getY() <= 330 && pieza4.getY() <= 330) {
				try {						
					pieza1.setLocation(pieza1.getX(), pieza1.getY() + 15);					
					this.seguir();					
					monitor.wait(100);						
				}
				catch (Exception e) {
					System.out.println("tralala");
				}
			}
			monitor.notify();
		}	
	}	

	//@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		if (arg0.getKeyChar() == 'a') {
			if (pieza1.getY() <= 340 && pieza2.getY() <= 340 && pieza3.getY() <= 340 && pieza4.getY() <= 340) {
				pieza1.setLocation(pieza1.getX() - 15, pieza1.getY());
				this.seguir();
			}
		}
		if (arg0.getKeyChar() == 'd') {
			if (pieza1.getY() <= 340 && pieza2.getY() <= 340 && pieza3.getY() <= 340 && pieza4.getY() <= 340) {
				pieza1.setLocation(pieza1.getX() + 15, pieza1.getY());
				this.seguir();
			}
		}
		if (arg0.getKeyChar() == 'q') {
			if (pieza1.getY() <= 340 && pieza2.getY() <= 340 && pieza3.getY() <= 340 && pieza4.getY() <= 340) {
				this.girar(1);
			}
		}
		if (arg0.getKeyChar() == 'e') {
			if (pieza1.getY() <= 340 && pieza2.getY() <= 340 && pieza3.getY() <= 340 && pieza4.getY() <= 340) {
				this.girar(0);
			}
		}
	}

	//@Override
	public void keyReleased(KeyEvent arg0) {		
	}

	//@Override
	public void keyTyped(KeyEvent arg0) {
	}
}